/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.smart.hawk.model.caller;

import co.com.smart.connection.model.manager.JDBCResourceManager;
import co.com.smart.hawk.dto.ClienteDTO;
import co.com.smart.hawk.dto.DatosMaestrosDTO;
import co.com.smart.hawk.dto.MaestrosDTO;
import co.com.smart.hawk.dto.MetaDataComponentDTO;
import co.com.smart.hawk.dto.TipoDTO;
import java.sql.PreparedStatement;
import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Andres
 */
public class MaestrosCaller extends JDBCResourceManager {

    public MaestrosCaller() {
        super();
    }

    public MetaDataComponentDTO consultarMaestros() {
        MetaDataComponentDTO result = new MetaDataComponentDTO();

        List<TipoDTO> tipos = new ArrayList<>();

        TipoDTO tipo = new TipoDTO();
        tipo.setNmtipo(new BigDecimal(1));
        tipo.setCotipo("001");
        tipo.setDstipo("Extemporaneo");

        tipos.add(tipo);

        tipo = new TipoDTO();
        tipo.setNmtipo(new BigDecimal(2));
        tipo.setCotipo("002");
        tipo.setDstipo("Preferencial");

        tipos.add(tipo);

        result.setTipos(tipos);

        return result;
    }

    public List<ClienteDTO> consultarClientes() {
        List<ClienteDTO> result = new ArrayList<>();

        ClienteDTO cliente = new ClienteDTO();

        cliente.setNmcliente(new BigDecimal(1));
        cliente.setDsdentificacion("101205206");
        cliente.setDsnombre("Andres Felipe Escobar");
        cliente.setNmtelefono(2280122L);
        cliente.setDsdireccion("calle 42 # 33 19");
        cliente.setDsemail("andresfescobar92@gmail.com");
        cliente.setNmcelular(3017424028L);

        result.add(cliente);

        cliente = new ClienteDTO();

        cliente.setNmcliente(new BigDecimal(1));
        cliente.setDsdentificacion("111205208");
        cliente.setDsnombre("Pepito");
        cliente.setNmtelefono(2235122L);
        cliente.setDsdireccion("calle 44 # 32 59");
        cliente.setDsemail("Pepito@gmail.com");
        cliente.setNmcelular(3013214028L);

        result.add(cliente);

        return result;
    }

    /**
     * Consulta los datos maestros apartir del maerstro filtrado
     * @param filtros
     * @return 
     */
    public List<DatosMaestrosDTO> consultarMaestros(DatosMaestrosDTO filtros) throws Throwable {

        ArrayList<DatosMaestrosDTO> datosMaestros = new ArrayList<>();
        Connection conn = null;
        PreparedStatement pst = null;
        ResultSet rs = null;

        String sql = " select sm_scdatmaestro,sm_codatmaestro,sm_dsdatmaestro,sm_dsvalor,a.sm_scmaestro "
                    +" from Smart_datos_maestros a inner join smart_hawk.Smart_maestros b "
                    +" on b.sm_scmaestro=a.sm_scmaestro where b.sm_comaestro = ? ";
        try {
            conn = getConnection();
            pst = conn.prepareStatement(sql);
            pst.setString(1, filtros.getScmaestro().getComaestro());
            rs = pst.executeQuery();
            
            if (rs!=null){
                while(rs.next()){
                    DatosMaestrosDTO datosmaestro = new DatosMaestrosDTO();
                    datosmaestro.setScdatmaestro(rs.getBigDecimal("sm_scdatmaestro"));
                    datosmaestro.setCodatmaestro(rs.getString("sm_codatmaestro"));
                    datosmaestro.setDsdatmaestro(rs.getString("sm_dsdatmaestro"));
                    datosmaestro.setDsvalor(rs.getString("sm_dsvalor"));
                    MaestrosDTO maestro = new MaestrosDTO();
                    maestro.setScmaestro(rs.getBigDecimal("sm_scmaestro"));
                    datosmaestro.setScmaestro(maestro);
                    datosMaestros.add(datosmaestro);
                }
            }

        } catch (SQLException sqle) {
            throw sqle;
        } finally {
            closeResources(conn, pst, rs);
        }

        return datosMaestros;

    }
}
